隐式类型本地变量

编写 C# 代码时,编译器可以提供很多便利。它可以按其初始化后所得的值推断变量的数据类型。

什么是隐式类型本地变量

隐式类型本地变量使用 var 关键字进行创建,该关键字指示 C# 编译器去推断类型。推断出类型后,它与使用实际数据类型一样,也可用于声明变量。

在下面的示例中,我们将使用 var 关键字而不是 string 关键字来声明变量。

var message = "Hello world!";

由于变量 message 会被立即设置为字符串值 "Hello World!",因此 C# 编译器了解其意向并将每个消息实例视为 string 类型实例。

事实上,message 变量的类型为字符串,并且永远无法更改。此处我们尝试将 message 设置为文本十进制值 10.0m

var message = "Hello World!";
message = 10.0m;
备注

其他编程语言采用不同的方式使用 var 关键字。在 C# 中,无论是使用实际数据类型还是让编译器推断数据类型,编译器都将以静态方式键入变量。换句话说,声明时类型是锁定的,因此永远无法保存不同数据类型的值。

只能在初始化变量时使用 var 关键字

请务必了解,var 关键字依赖用于初始化变量的值。如果尝试在不初始化变量的情况下使用 var 关键字,则在试图编译代码时会收到错误消息。

var message;

如果尝试运行此代码,在编译时将看到以下输出:

(1,5): error CS0818: Implicitly-typed variables must be initialized

为什么使用 var 关键字

var 关键字已被 C# 社区广泛采用,因此,如果你查看书籍或联机中的代码示例,很有可能会看到使用的是 var 关键字,而不是实际的数据类型名称。因此,我们想确保在此模块中将它引入。

var 关键字在 C# 中具有重要用途。由于在编写高级代码之前你可能不甚了解,因此在某些情况下,初始化变量时,数据类型可能不太明显。实际上,在某些情况下,C# 可能会为代码提供一种新的数据类型,并可能无法提前为其指定可预测的命名。再说一次,这是 C# 的一项高级功能,我们将在其他模块中进行介绍。

开始之际,我们建议声明变量时继续使用实际的数据类型名称。声明变量时使用数据类型有助于你有目的性地编写代码。

概括

下面是此单元中有关 var 关键字和隐式类型本地变量的关键要点: